/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Beans;

import conexion.Coneccion;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 *
 * @author Jorge Aguilar
 */
public class ModEmp_Persona {
    
    private int idpersona;
    private String numerodocumento;
    private String nombre;
    private String apepaterno;
    private String apematerno;
    private String direccion;
    private int fk_tipodocumento;
    private int fk_idusuario_crea;
    private int fk_idusuario_mod;
    private boolean eliminado;
    private String accion;

    public ModEmp_Persona() {
    }

    public int getIdpersona() {
        return idpersona;
    }

    public void setIdpersona(int idpersona) {
        this.idpersona = idpersona;
    }

    public String getNumerodocumento() {
        return numerodocumento;
    }

    public void setNumerodocumento(String numerodocumento) {
        this.numerodocumento = numerodocumento;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getApepaterno() {
        return apepaterno;
    }

    public void setApepaterno(String apepaterno) {
        this.apepaterno = apepaterno;
    }

    public String getApematerno() {
        return apematerno;
    }

    public void setApematerno(String apematerno) {
        this.apematerno = apematerno;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public int getFk_tipodocumento() {
        return fk_tipodocumento;
    }

    public void setFk_tipodocumento(int fk_tipodocumento) {
        this.fk_tipodocumento = fk_tipodocumento;
    }

    public int getFk_idusuario_crea() {
        return fk_idusuario_crea;
    }

    public void setFk_idusuario_crea(int fk_idusuario_crea) {
        this.fk_idusuario_crea = fk_idusuario_crea;
    }

    public int getFk_idusuario_mod() {
        return fk_idusuario_mod;
    }

    public void setFk_idusuario_mod(int fk_idusuario_mod) {
        this.fk_idusuario_mod = fk_idusuario_mod;
    }

    public boolean isEliminado() {
        return eliminado;
    }

    public void setEliminado(boolean eliminado) {
        this.eliminado = eliminado;
    }

    public String getAccion() {
        return accion;
    }

    public void setAccion(String accion) {
        this.accion = accion;
    }
    
    /* __________________________________________________________________ */
    /* ------------------------------------------------------------------ */
    public ModEmp_Persona obtenerPersona(int idpersona)
    {   ModEmp_Persona p = new ModEmp_Persona();
        CallableStatement ps = null;
        ResultSet rs = null;
        Connection cn = Coneccion.getConexion();
        try
        {   
            ps = cn.prepareCall("select * from view_pas_persona_listar_persona where idpersona=?");
            ps.setInt(1, idpersona);
            rs = ps.executeQuery();
            while(rs.next())
            {   p.setIdpersona(rs.getInt(1));
                p.setNumerodocumento(rs.getString(2));
                p.setNombre(rs.getString(3));
                p.setApepaterno(rs.getString(4));
                p.setApematerno(rs.getString(5));
                p.setDireccion(rs.getString(6));
                p.setFk_tipodocumento(rs.getInt(7));
            }
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(SQLException e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        } catch(Exception e)
        {   e.printStackTrace();
            Coneccion.cerrarCall(ps);
            Coneccion.cerrarConexion(cn);
        }         
       return p;
    }
    
    public String crearUsuario(String nom, String apat, String amat)
    {   String usuario = null;
        char letraN = nom.toLowerCase().charAt(0);
        char letraAM = amat.toLowerCase().charAt(0);
        return usuario = letraN+apat.toLowerCase()+letraAM;
    }
    
    
    public String crearContraseña(String nom, String apat, String numdoc)
    {   String contraseña = null;
        char letra1N = nom.toLowerCase().charAt(0);
        char letra1AM = apat.toLowerCase().charAt(0);
        return contraseña = letra1N+numdoc+letra1AM;
    }
    
    
    public Integer operaciones(ModEmp_Persona v) {
        String inserto;        
        CallableStatement ps = null;
        ResultSet rs= null;
        Integer id = 0;
        Connection con = Coneccion.getConexion();        
        try {
            ps = con.prepareCall("{call mante_pas_persona_operacion(?,?,?,?,?,?,?,?,?,?)}");
            ps.setInt(1, v.getIdpersona());
            ps.setString(2, v.getNumerodocumento());
            ps.setString(3, v.getNombre());
            ps.setString(4, v.getApepaterno());
            ps.setString(5, v.getApematerno());
            ps.setString(6, v.getDireccion());
            ps.setInt(7, v.getFk_tipodocumento());
            ps.setInt(8, v.getFk_idusuario_crea());
            ps.setInt(9, v.getFk_idusuario_mod());
            ps.setString(10, v.getAccion());
            rs  = ps.executeQuery();//AQUI
            if (rs.next()) {
                if (v.getAccion().equals("U")) {
                    inserto = "La operacion fue actualizado correctamente";
                    id = rs.getInt(1);
                } else {
                    if (v.getAccion().equals("I")) {
                        inserto = "La operacion fue insertado correctamente";
                        id = rs.getInt(1);
                    } else {
                        inserto = "La operacion fue eliminado correctamente";
                        id = rs.getInt(1);
                    }
                }
            } else {
                inserto = "No se pudo insertar ";
            }
        } catch (Exception ex) {
            inserto = ex.getMessage();
            System.out.println("fallo ERROR "+ex.getMessage());            
        } finally {
            try {
                rs.close();
                ps.close();
                con.close();
            } catch (Exception ex) {
            }
        }
        return id;
    }   
     
    
    public static ModEmp_Persona listarPersona_One( String numerdoc) {
        ModEmp_Persona v = new ModEmp_Persona();
        Connection cn = null;
        PreparedStatement cl = null;
        ResultSet rs = null;
        
        try {
            String call = "SELECT * FROM view_pas_persona_listar_persona where numerodocumento='"+numerdoc+"'";
            cn = Coneccion.getConexion();
            cl = cn.prepareStatement(call);                   
            rs = cl.executeQuery();
            while (rs.next()) {                
                v.setIdpersona(rs.getInt(1));
                v.setNumerodocumento(rs.getString(2));
                v.setNombre(rs.getString(3));
                v.setApepaterno(rs.getString(4));
                v.setApematerno(rs.getString(5));
                v.setDireccion(rs.getString(6));
                v.setEliminado(rs.getBoolean(11));
            }
           
        } catch (SQLException e) {
            e.printStackTrace();
            Coneccion.deshacerCambios(cn);
            Coneccion.cerrarConexion(cn);            
        } catch (Exception e) {
             e.printStackTrace();
            Coneccion.deshacerCambios(cn);
            Coneccion.cerrarConexion(cn);           
        }finally {
            try {
                 rs.close();
                cl.close();
                cn.close();
            } catch (Exception ex) {
            }
        }
        return v;
    }
    
}
